/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: Lenovo
 * Date: 2025-04-20
 * Time: 18:36
 */
public class MyArrayListTest {
    public static void main(String[] args) {
        MyArrayList list = new MyArrayList();

        // 1. 测试 add(int data)
        list.add(1);  // 添加元素 1
        list.add(2);  // 添加元素 2
        list.add(3);  // 添加元素 3
        System.out.print("添加 1,2,3 后的顺序表：");
        list.display();  // 输出：1 2 3

        // 2. 测试 add(int pos, int data)
        list.add(1, 5);  // 在位置 1 插入 5
        System.out.print("在位置1插入5后的顺序表：");
        list.display();  // 输出：1 5 2 3

        // 3. 测试 contains(int toFind)
        boolean hasFive = list.contains(5);
        System.out.println("是否包含5：" + hasFive);  // 输出：true

        // 4. 测试 indexOf(int toFind)
        int index = list.indexOf(2);
        System.out.println("元素2的索引：" + index);  // 输出：2

        // 5. 测试 get(int pos)
        int value = list.get(0);
        System.out.println("位置0的元素：" + value);  // 输出：1

        // 6. 测试 set(int pos, int value)
        list.set(3, 99);  // 将位置3设为99
        System.out.print("设置位置3为99后的顺序表：");
        list.display();  // 输出：1 5 2 99

        // 7. 测试 remove(int toRemove)
        list.remove(5);  // 删除第一个5
        System.out.print("删除5后的顺序表：");
        list.display();  // 输出：1 2 99

        // 8. 测试 removeAll(int toRemove)
        list.add(2); list.add(2);  // 添加两个2
        System.out.print("添加两个2后的顺序表：");
        list.display();  // 预期输出：1 2 99 2 2
        list.removeAll(2);  // 删除所有2
        System.out.print("删除所有2后的顺序表：");
        list.display();  // 预期输出：1 99

        // 9. 测试 size()
        System.out.println("当前顺序表大小：" + list.size());  // 预期输出：2

        // 10. 测试 clear()
        System.out.print("清空前的顺序表：");
        list.display(); // 输出：清空前的顺序表：1 99
        list.clear();
        System.out.print("清空后的顺序表：");
        list.display();  // 输出：（空）
        System.out.println("清空后的大小：" + list.size());  // 预期输出：0

        // 11. 测试异常（越界访问）
        try {
            list.get(10);  // 触发异常
        } catch (PosOutOfException e) {
            System.out.println("异常测试：越界访问成功触发异常");
        }
    }
}
